
package com.jf.cloud.live.service;

import com.jf.cloud.common.database.dto.PageDTO;
import com.jf.cloud.common.database.vo.PageVO;
import com.jf.cloud.live.param.LiveUsableNumParam;
import com.jf.cloud.live.constant.LiveInterfaceType;
import com.jf.cloud.live.dto.LiveLogDTO;
import com.jf.cloud.live.model.LiveLog;

/**
 * 直播记录
 *
 * @author zz
 * @date 2022-08-17 17:09:05
 */
public interface LiveLogService {

    /**
     * 分页获取直播记录列表
     * @param pageDTO 分页参数
     * @return 直播记录列表分页数据
     */
    PageVO<LiveLog> page(PageDTO pageDTO, LiveLogDTO liveLogDTO);

    /**
     * 根据直播记录id获取直播记录
     *
     * @param liveLogId 直播记录id
     * @return 直播记录
     */
    LiveLog getByLiveLogId(Long liveLogId);

    /**
     * 保存直播记录
     * @param liveLog 直播记录
     */
    void save(LiveLog liveLog);

    /**
     * 更新直播记录
     * @param liveLog 直播记录
     */
    void update(LiveLog liveLog);

    /**
     * 根据直播记录id删除直播记录
     * @param liveLogId 直播记录id
     */
    void deleteById(Long liveLogId);

    /**
     * 返回商家和平台可用次数
     * @param shopId 店铺id
     * @param type 校验类型
     * @return 商家和平台可用次数
     */
    LiveUsableNumParam getLiveNum(Long shopId, LiveInterfaceType type);

    /**
     * 校验商家和平台可用次数
     * @param shopId 店铺id
     * @param type 校验类型
     * @param desc 备注
     */
    void checkNumsAndSaveLog(Long shopId, LiveInterfaceType type, String desc);

    /**
     * 根据参数获取商家操作记录信息
     * @param liveLogDTO
     * @return
     */
    LiveLog getLiveLogByParams(LiveLogDTO liveLogDTO);
}
